var util = require('../../utils/util');
let today = util.formatTime(new Date())
Component({
  //properties用于接收参数
  properties: {
    doctorInfo: {
      //定义类型
      type: Array,
      //定义默认值
      value: []
    },
    user: { //外部页面用
      //定义类型
      type: Object,
      //定义默认值
      value: {}
    },
    collect: { //外部页面用
      //定义类型
      type: Array,
      //定义默认值
      value: []
    },
    appoint: { //外部页面用
      //定义类型
      type: Array,
      //定义默认值
      value: []
    },
    appointTmp: { //外部页面用
      //定义类型
      type: Array,
      //定义默认值
      value: []
    },
  },
  data: {
    //用户信息
    user: [],
    //收藏信息
    collect: [],
    appoint: [],
    appointTmp: [],
    doctorMaxPatient:0,
  },
  //一来组件就拿用户信息(内部页面用)
  pageLifetimes: {
    show: function () {
      this.setData({
        user: wx.getStorageSync('user')
      })
      this.getCollectInfo()
      this.getAppointInfo()
    },
  },
  methods: {
    getCollectInfo() { //刷新
      //从云数据库拿收藏信息(内部)
      wx.cloud.callFunction({
        name: 'collect',
        data: {
          action: 'findPatient',
          patientAdmin: this.data.user.admin
        }
      }).then(res => {
        console.log('获取收藏信息成功', res)
        //把获取到的收藏信息数组转成只有医生id的对象
        let collectTmp = res.result.data.map(item => {
          return item.doctorId
        })
        this.setData({
          collect: collectTmp
        })
        console.log('获取云数据后本地的收藏信息', this.data.collect)
      }).catch(res => {
        console.log('获取收藏信息失败', res)
      })
    },
    getAppointInfo() { //刷新
      //从云数据库拿预约信息(内部)
      wx.cloud.callFunction({
        name: 'appoint',
        data: {
          action: 'findPatientShow',
          patientAdmin: this.data.user.admin,
          appointDay: today,
          isOver: false,
          isPassed: false
        }
      }).then(res => {
        console.log('获取预约信息成功', res)
        //把获取到的预约信息数组转成只有医生id的对象
        let appointTmp = res.result.data.map(item => {
          return item.doctorId
        })
        this.setData({
          appoint: res.result.data,
          appointTmp: appointTmp,
        })
        console.log('获取云数据后本地的预约信息', this.data.appoint)
        console.log('获取云数据后本地的预约信息医师id', this.data.appointTmp)
      }).catch(res => {
        console.log('获取预约信息失败', res)
      })
    },
    clickAppoint(e) { //点击预约按钮
      console.log("这个医生的id", e.currentTarget.dataset.doctorid)
      var that = this

      //根据doctorId得到预约最大人数
      wx.cloud.callFunction({
        name:'doctorInfo',
        data:{
          action:'findOneId',
          doctorId:e.currentTarget.dataset.doctorid,
        }
      }).then(res=>{
        console.log("拿到医师数据成功",res.result.data[0].doctorMaxPatient)
        that.setData({
          doctorMaxPatient:res.result.data[0].doctorMaxPatient
        })
      }).catch(res=>{
        console.log('拿医师信息失败',res)
      })


      if(that.data.user.userType=='C'){
        wx.cloud.callFunction({
          name:'patientInfo',
          data:{
            action:'findOne',
            admin:that.data.user.admin
          }
        }).then(res=>{
          console.log('查找这个人的患者信息成功',res)
          //判断这个人是否写了个人信息
          if(!res.result.data[0]){
            //如果没有写个人信息，要求写个人信息
            wx.navigateTo({
              url: '/pages/changePatient/changePatient?admin='+that.data.user.admin,
            })
            wx.showToast({
              icon:'none',
              title: '您还没有填写个人信息，为不影响使用，请完善个人信息',
              duration:3000,
            })
          }
          else{
            if (that.data.appointTmp.includes(e.currentTarget.dataset.doctorid)) {
              console.log('appoint数据库中有这条信息并且排号没有过期，跳转到显示界面')
              //如果有这条预约记录就跳到显示，
              for(var i=0;i<that.data.appoint.length;i++){
                if(that.data.appoint[i].doctorId==e.currentTarget.dataset.doctorid){
                  var flowId=that.data.appoint[i].flowId
                }
              }
              wx.navigateTo({
                url: '/pages/seeMyAppoint/seeMyAppoint?flowId='+flowId,
              })
            } else {
              console.log('appoint数据库中没有这条信息或者排号没有过期，把这条信息添加,跳转')
              //如果没有这条记录就增加
              //判断对预约人数是否超出可预约人数
              wx.cloud.callFunction({
                name: 'appoint',
                data: {
                  action: "findNum",
                  doctorId: e.currentTarget.dataset.doctorid,
                  appointDay: today,
                  isPassed: false
                }
              }).then(res => {
                console.log('查找这个医生被预约的人数成功', res.result.data.length)
                console.log('查找这个医生被预约的人数成功', res.result.data[0])
                let nowLength = res.result.data.length
                //判断
                if (nowLength == 0 || (nowLength > 0 && that.data.doctorMaxPatient > nowLength) ) {
                  console.log('人数还能继续预约',that.data.doctorMaxPatient,nowLength)
                  //跳转到新建界面
                  wx.navigateTo({
                    url: '/pages/addMyAppoint/addMyAppoint?doctorId='+e.currentTarget.dataset.doctorid,
                  })
                  //刷新界面预约信息
                  // that.getAppointInfo()
                } else {
                  //提示不能再新建
                  wx.showToast({
                    image: '/images/else/alarm.png',
                    duration: 3000,
                    title: '预约人数已满',
                  })
                }
              }).catch(res => {
                console.log('查找这个医生被预约的人数失败', res)
              })
            }
          }
        }).catch(res=>{
          console.log('查找这个人的患者信息失败',res)
        })
      }
    },
    clickCollect(e) { //点击收藏按钮
      var that = this
      console.log("这个医生的id", e.currentTarget.dataset.doctorid)

      if (that.data.user.userType == 'C') {
        wx.cloud.callFunction({
          name: 'patientInfo',
          data: {
            action: 'findOne',
            admin: that.data.user.admin
          }
        }).then(res => {
          console.log('查找这个人的患者信息成功', res)
          //判断这个人是否写了个人信息
          if (!res.result.data[0]) {
            //如果没有写个人信息，要求写个人信息
            wx.navigateTo({
              url: '/pages/changePatient/changePatient?admin=' + that.data.user.admin,
            })
            wx.showToast({
              icon: 'none',
              title: '您还没有填写个人信息，为不影响使用，请完善个人信息',
              duration: 3000,
            })
          } else {
            //找下有没有这条记录
            if (this.data.collect.includes(e.currentTarget.dataset.doctorid)) {
              console.log('collect数据库中有这条信息，把这条信息删除')
              //如果有这条收藏记录就删除，
              wx.cloud.callFunction({
                name: 'collect',
                data: {
                  action: 'del',
                  patientAdmin: that.data.user.admin || that.data.properties.user.admin,
                  doctorId: e.currentTarget.dataset.doctorid,
                }
              }).then(res => {
                console.log('删除这条收藏信息成功', res)
                //从新获取
                that.getCollectInfo()
                wx.showToast({
                  title: '取消收藏成功',
                })
              }).catch(res => {
                console.log('删除这条收藏信息失败', res)
                wx.showToast({
                  icon: 'none',
                  title: '取消收藏失败',
                })
              })
            } else {
              console.log('collect数据库中没有这条信息，把这条信息添加')
              //如果没有这条记录就增加
              wx.cloud.callFunction({
                name: 'collect',
                data: {
                  action: 'add',
                  patientAdmin: that.data.user.admin || that.data.properties.user.admin,
                  doctorId: e.currentTarget.dataset.doctorid,
                  doctorName: e.currentTarget.dataset.doctorname,
                  collectTime: util.formatTime(new Date()),
                  patientName: that.data.user.name || that.data.properties.user.name,
                }
              }).then(res => {
                console.log('添加这条收藏信息成功', res)
                //从新获取
                that.getCollectInfo()
                wx.showToast({
                  title: '收藏医师成功',
                })
              }).catch(res => {
                console.log('添加这条收藏信息失败', res)
                wx.showToast({
                  icon: 'none',
                  title: '收藏医师失败',
                })
              })
            }
          }
        }).catch(res => {
          console.log('查找这个人的患者信息失败', res)
        })
      }

    },
    //点击医生图片显示医师执照
    showDoctorPic: function (e) {
      console.log("这个医生的图片数组", e.currentTarget.dataset.doctorpic)
      var imgUrl = e.currentTarget.dataset.doctorpic
      wx.previewImage({
        urls: imgUrl, //需要预览的图片http链接列表，注意是数组
      })
    }
  }
})